package algorithm.middle;

import sun.invoke.empty.Empty;

import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;

/**
 * @BelongsProject: LeetCode
 * @BelongsPackage: algorithm.middle
 * @Author: 江岸
 * @CreateTime: 2021-05-26 11:03
 * @Description: 给出一个字符串 s（仅含有小写英文字母和括号）。
 *
 * 请你按照从括号内到外的顺序，逐层反转每对匹配括号中的字符串，并返回最终的结果。
 *
 * 注意，您的结果中 不应 包含任何括号。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：s = "(abcd)"
 * 输出："dcba"
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class ReverseParentheses1190 {
    public String reverseParentheses(String s) {
        Deque<Character> stack = new LinkedList<>();
        for (int i=0;i<s.length();i++){
            //如果有右边阔号
            if (s.charAt(i)==')'){
                ArrayList<Character> list = new ArrayList<>();
                while (stack.peek()!='('){
                    list.add(stack.pop());
                }
                stack.pop();
                for (Character c:list){
                    stack.push(c);
                }
            }else {
                stack.push(s.charAt(i));
            }
        }
        //System.out.println(stack);
        StringBuilder stringBuilder = new StringBuilder();
        while (!stack.isEmpty()){
            stringBuilder.append(stack.pollLast());
        }
        return stringBuilder.toString();
    }
}
